<template>
  <!-- 顶部信息栏 -->
  <div class="w">
    <div class="info-box">
      <van-image
        round
        width="64px"
        height="64px"
        fit="cover"
        :src="userInfo.photo"
      />
      <h2>
        {{ userInfo.name }}
        <br />
        <van-tag color="#fff" text-color="#0098fa">{{
          userInfo.birthday
        }}</van-tag>
      </h2>
    </div>
    <!-- 用户页功能导航栏 -->
    <van-row class="user-link">
      <van-col span="8">
        <van-icon name="newspaper-o" size="22px" color="#a9c0fe" />
        <br />
        我的作品
      </van-col>
      <van-col span="8">
        <van-icon name="star-o" size="22px" color="#ff5a6d" />
        <br />
        我的收藏
      </van-col>
      <van-col span="8">
        <van-icon name="tosend" size="22px" color="#ffaa0e" />
        <br />
        阅读历史
      </van-col>
    </van-row>
    <!-- 操作列表-->
    <van-cell-group>
      <van-cell icon="edit" to="/edit" title="编辑资料" is-link />
      <van-cell icon="chat-o" to="/student" title="小智同学" is-link />
      <van-cell icon="setting-o" title="系统设置" is-link />
      <van-cell @click="exitClick" icon="warning-o" title="退出登录" is-link />
    </van-cell-group>
  </div>
</template>

<script>
// 导入网络中间层
import { getUserInfo } from './user.js'
// 导入token工具包（退出删除操作）
import { removeToken } from '@/utils/token.js'
export default {
  name: 'user',
  data () {
    return {
      userInfo: {}
    }
  },
  methods: {
    exitClick () {
      // 引入 Dialog 组件后，会自动在 Vue 的 prototype 上挂载 $dialog 方法，在所有组件内部都可以直接调用此方法。
      this.$dialog
        .confirm({
          title: '退出登录',
          message: '真的要退出吗？嘤嘤嘤...'
        })
        .then(() => {
          // 用户点击了确定按钮
          // 删除token
          removeToken()
          // 清空用户信息
          this.userInfo = {}
          // 返回首页
          this.$router.push({ path: '/home' })
        })
        .catch(err => {
          // 用户点击了取消按钮
          console.log(err)
        })
    }
  },
  // 生命周期钩子
  created () {
    getUserInfo()
      .then(res => {
        // console.log(res)
        // 绑定数据  渲染结构
        this.userInfo = res.data.data
        //  获取到数据之后将数据存储到vuex
        this.$store.commit('setUserInfo', res.data.data)
      })
      .catch(err => {
        console.log(err)
      })
  }
}
</script>

<style lang="less">
.w {
  .info-box {
    display: flex;
    align-items: center;
    height: 100px;
    background-color: #0098fa;
    h2 {
      font-size: 16px;
      color: #fff;
      font-weight: 500;
    }
    .van-image {
      padding: 0 16px;
    }
  }
  .user-link {
    font-size: 14px;
    text-align: center;
    padding: 20px 0;
    font-weight: 500;
  }
}
</style>
